Package-level declarations

Types

Link copied to clipboard
interface I18nable

允许对象通过 i18n 获取 I18nService

Link copied to clipboard
object IO

用于告知 scope 使用 IO 线程池 Dispatchers.IO。(使用 scope(IO)

Link copied to clipboard
interface JsonStorable

允许对象通过 store 获取 JsonStore

Link copied to clipboard
interface Loggable

允许对象通过 log 获取 Logger,AutoTweaker 使用 logback 作为实现,插件仅需依赖 slf4j。

Link copied to clipboard
interface ObjectStorable

允许对象通过 objects 获取 ObjectStorage

Link copied to clipboard
class ServiceRegistry(val trace: (KClass<*>) -> TraceRecorder, val store: (KClass<*>) -> JsonStore, lazyObjects: () -> ObjectStorage, lazySetting: () -> SettingService, lazyI18n: () -> I18nService)

请不要构造此类或访问此类的伴生对象。

Link copied to clipboard
interface Traceable

允许对象通过 trace 获取 TraceRecorder

Properties

Link copied to clipboard
const val APP_NAME: String

值为 AutoTweaker

Link copied to clipboard

值为 autotweaker

Link copied to clipboard

存储配置及其他数据的目录,请使用提供的持久化 API 而不是直接在此路径下存放文件。

Link copied to clipboard
val HOME: Path

用户家目录。

Link copied to clipboard

获取 AutoTweaker 提供的 I18nService

Link copied to clipboard

四个空格字符(" ")。

Link copied to clipboard
val json: Json
Link copied to clipboard

路径字符串长度。

Link copied to clipboard

长度为 10 的 -,也就是 ----------

Link copied to clipboard
val Loggable.log: Logger

获取 Logger,请遵循日志规范,不要污染程序日志。

Link copied to clipboard
const val MASK_CHAR: Char = '*'

星号,也就是 *

Link copied to clipboard

获取 AutoTweaker 提供的 ObjectStorage

Link copied to clipboard

用于加载插件 jar 的目录,此目录中只有以 .jar 结尾的文件会被加载,jar 或 class 损坏的文件不会被加载。

Link copied to clipboard
const val SPACE: Char = ' '

一个空格字符(' ')。

Link copied to clipboard

获取 AutoTweaker 提供的 JsonStore。 同一类获取到的 JsonStore 始终相同,不同类获取到的 JsonStore 相互隔离。

Link copied to clipboard

容器内 /tmp/autotweaker 在宿主的挂载位置。

Link copied to clipboard

存放临时文件的目录,通常为 /tmp/autotweaker

Link copied to clipboard

获取 AutoTweaker 提供的 TraceRecorder,自身作为 origin

Link copied to clipboard

容器内 /workspace 在宿主的挂载位置,位于此路径下的工作区会被视为容器内工作区。

Functions

Link copied to clipboard

打印一条用于临时调试的 error 级别日志,特殊的命名便于通过自动化脚本扫描。

Link copied to clipboard
fun allNull(vararg items: Any?): Boolean

items 全部为 null 返回 true。

Link copied to clipboard
inline fun <T> T.andLog(logger: Logger, crossinline log: Logger.(T) -> Unit): T

用于在链式调用中插入日志,示例:

Link copied to clipboard

格式化异常信息,包括类名、message、cause。

Link copied to clipboard
suspend fun CoroutineScope.cancelAndJoin()

取消并等待协程作用域的根 Job 完成,等价于 scope.coroutineContext.job.cancelAndJoin()

Link copied to clipboard
fun DataUrl(mediatype: String, data: ByteArray): String

生成一个符合 RFC 2397 的 data URL

Link copied to clipboard
suspend fun ObjectStorable.DataUrl(mediatype: String, data: Sha256): String?

生成一个符合 RFC 2397 的 data URL

Link copied to clipboard
fun <T> T.discard()

丢弃对象并返回 Unit

fun <T, R> T.discard(result: R): R

丢弃对象并返回 result

Link copied to clipboard
inline fun <T> Iterable<T>.forEachBetween(action: (T) -> Unit, between: () -> Unit)

遍历一个 Iterable 对象并调用 action,在每两次遍历中间调用 between

Link copied to clipboard
inline suspend fun <T> Array<T>.forEachParallel(crossinline action: suspend (T) -> Unit)
inline suspend fun <T> Iterable<T>.forEachParallel(crossinline action: suspend (T) -> Unit)
inline suspend fun <K, V> Map<K, V>.forEachParallel(crossinline action: suspend (Map.Entry<K, V>) -> Unit)

forEach 并行版,会为每个条目启动一个协程来执行 action

inline suspend fun <T> Array<T>.forEachParallel(limit: Int, crossinline action: suspend (T) -> Unit)
inline suspend fun <T> Iterable<T>.forEachParallel(limit: Int, crossinline action: suspend (T) -> Unit)
inline suspend fun <K, V> Map<K, V>.forEachParallel(limit: Int, crossinline action: suspend (Map.Entry<K, V>) -> Unit)

forEach 并行版,会为每个条目启动一个协程来执行 action,同时限制并发数为 limit

Link copied to clipboard

获取一个字符串 SettingDef 的当前值,并通过 java.lang.String.format 填充字符串占位符。

Link copied to clipboard
fun <V : SettingValue<T>, T> SettingDef<V>.get(): T

对一个 SettingDef 调用 get 可以直接从数据库拿到当前配置值。

Link copied to clipboard

请不要调用此方法。

Link copied to clipboard
suspend fun CoroutineScope.join()

等待协程作用域的根 Job 完成,等价于 scope.coroutineContext.job.join()

Link copied to clipboard
fun line(length: Int): String

输出 length- 组成的字符串。

Link copied to clipboard

格式化异常信息,包括类名、message、cause。

Link copied to clipboard
@JvmName(name = "orNowNotNull")
fun Instant.orNow(): Instant

如果 this 为 null,返回 Clock.System.now,否则返回 this 本身。

Link copied to clipboard
fun <C : CharSequence> C.orNull(): C?

如果 CharSequence 为空,返回 null,否则返回 CharSequence 本身。

fun <T, C : Collection<T>> C.orNull(): C?

如果 Collection 为空,返回 null,否则返回 Collection 本身。

fun <T> Array<T>.orNull(): Array<T>?

如果 Array 为空,返回 null,否则返回 Array 本身。

fun <K, V> Map<K, V>.orNull(): Map<K, V>?

如果 Map 为空,返回 null,否则返回 Map 本身。

Link copied to clipboard
@JvmName(name = "orThrowNotNull")
inline fun <T : Any> T.orThrow(exception: () -> Throwable): T
inline fun <T : Any> T?.orThrow(exception: () -> Throwable): T
Link copied to clipboard

StringBuffer 中取出一行,找不到换行符返回 null。

Link copied to clipboard
fun Loggable.scope(io: IO? = null): CoroutineScope

快速创建一个协程作用域,并在崩溃时记录日志。

Link copied to clipboard
fun <V : SettingValue<T>, T> SettingDef<V>.set(value: T)

对一个 SettingDef 调用 set 可以更新配置值。

Link copied to clipboard
operator fun Char.times(n: Int): String

Char 添加 * 操作符的支持,例如 '-' * 10 输出 10 个 -

operator fun String.times(n: Int): String

String 添加 * 操作符的支持,例如 "**" * 10,输出 20 个 *

Link copied to clipboard
fun String.toMasked(minLength: Int = 15, prefixKeep: Int = 5, suffixKeep: Int = 4): String

给敏感信息例如 api key 打码。

Link copied to clipboard

对一个字符进行 Unicode 转义,返回一个 Unicode 转义序列。

对一个字符串进行 Unicode 转义,返回 6 倍大小的新字符串。

Link copied to clipboard
fun String.unescapeUnicode(strict: Boolean = true): String

从一个可能包含 Unicode 转义序列的字符串中解码 Unicode 转义。

Link copied to clipboard
fun unreachable(message: String? = null): Nothing
Link copied to clipboard
fun UUID(): UUID